fun main(args: Array<String>) {

    /**
     * 4.1 Array 数组
     * 我们可以使用库函数 arrayOf() 来创建一个数组并传递元素值给它，这样 arrayOf(1, 2, 3) 创建了 array [1, 2, 3]。 或者，库函数 arrayOfNulls() 可以用于创建一个指定大小的、所有元素都为空的数组。
     * 另一个选项是用接受数组大小以及一个函数参数的 Array 构造函数，用作参数的函数能够返回给定索引的每个元素初始值：
     */
    //创建一个 Array<String> 初始化为 ["0", "1", "4", "9", "16", "25", "36", "49", "64", "81"]
    val asc = Array(10) { i -> (i * i).toString() }
    asc.forEach {
        println(it)
    }


    /**
     * 4.2 原生类型数组
     *  在Kotlin中也有无装箱开销的专门的类来表示原生类型数组: ByteArray、 ShortArray、IntArray 等等。这些类与 Array 并没有继承关系，但是它们有同样的方法和属性。
     */
    val intArray = intArrayOf(1, 2, 3, 4, 5)  //使用intArrayOf函数创建并初始化一个IntArray[1,2,3,4,5]

    val intArr1 = IntArray(5)  //创建一个长度为5的空的IntArray

    val intArr2 = IntArray(5) { 100 }   //创建一个长度为5的值全为100的IntArray[100,100,100,100,100]

    val intArr3 = IntArray(5) { it * 2 }    //注意这个it是他的索引下标值，所以这是创建一个长度为5的IntArray[0, 2, 4, 6, 8]

}